// 预处理中间件
package middleware

import (
	"context"
	"time"

	"system-admin/config/redis"
	"system-admin/internal/define"

	"github.com/gin-gonic/gin"
)

// ParamsHandle 参数预处理
func ParamsHandle() gin.HandlerFunc {
	return func(c *gin.Context) {
		token := c.GetHeader("Authorization")
		if token == "" {
			token = c.Query("Authorization")
		}
		rdb := redis.NewDB()
		// 获取会话参数
		ctx, cancel := context.WithTimeout(context.Background(), time.Second*3)
		defer cancel()
		valueMap, _ := rdb.HGetAll(ctx, define.RedisUserLoginToken+token).Result()
		c.Set("user_id", valueMap["user_id"])
		c.Set("merchant_id", valueMap["merchant_id"])
		c.Set("role_id", valueMap["role_id"])
		// 注意
		// merchant_path 指的是商户的商户路径
		// user_merchant_path 指的是用户的商户路径
		c.Set("merchant_path", valueMap["merchant_path"])
		c.Set("user_merchant_path", valueMap["merchant_path"]+">"+valueMap["merchant_id"])
		// …… 获取其他参数
		c.Next()
	}
}
